--- title: "113. Path Sum II" created: 2025-12-17 --- # 113. Path Sum II ## 题目 [**113. Path Sum II**](https://leetcode.com/problems/path-sum-ii/) ![[image-379ab6ab.png]] ## 思路分析 dfs ## 代码实现 ```java /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List> pathSum(TreeNode root, int targetSum) { List> result = new ArrayList<>(); List path = new ArrayList<>(); dfs(root,targetSum,path,result); return result; } private void dfs(TreeNode node,int targetSum,List path,List> result){ if(node == null) return; targetSum-=node.val; path.add(node.val); if(node.left == null && node.right == null){ if(targetSum==0){ result.add(new ArrayList<>(path)); } }else{ dfs(node.left,targetSum,path,result); dfs(node.right,targetSum,path,result); } targetSum+=node.val; path.remove(path.size()-1); } } ``` ```java /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List> pathSum(TreeNode root, int targetSum) { List> result = new ArrayList<>(); List path = new ArrayList<>(); dfs(root,targetSum,path,result); return result; } private void dfs(TreeNode node,int targetSum,List path,List> result){ if(node == null) return; path.add(node.val); if(node.left == null && node.right == null){ if(targetSum==node.val){ result.add(new ArrayList<>(path)); } }else{ dfs(node.left,targetSum-node.val,path,result); dfs(node.right,targetSum-node.val,path,result); } path.remove(path.size()-1); } } ``` ## 同类题型 ## 视频讲解